package persistencia;

import java.sql.Connection;
import java.util.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import negocio.Vehiculo;
import negocio.VehiculoMant;
import controlador.Sistema;

public class perMantenimiento {
	private Sistema sist;
	private int a=0,dom;
	
	public int insert(VehiculoMant vm)
	{
		sist=Sistema.getInstance();
		try {			
			Connection con=PoolConnection.getPoolConnection().getConnection();
			PreparedStatement ps=con.prepareStatement("select max(IDVEHIMANT) from VEHICULOS_MANTENIMIENTO");
			ResultSet rs=ps.executeQuery();
			if(rs.next())
				a=rs.getInt(1);			
			ps=con.prepareStatement("select ID_VEHICULO from VEHICULO where dominio=?");
			ps.setString(1, vm.getVehiculo().getDominio());
			rs=ps.executeQuery();
			if(rs.next())//siempre existe este dominio, la ventana lo verifica
				dom=rs.getInt(1);		
			ps=con.prepareStatement("insert into VEHICULOS_MANTENIMIENTO values (?,?,?,?,?,?,?)");
			ps.setInt(1,a+1);	
			ps.setString(2, vm.getEstado());
			ps.setInt(3, vm.getSede().getNroSede());
			ps.setInt(4, dom);
			//System.out.println("Ver tema fecha (Mantenimiento)");
			//java.sql.Date fechaI=(java.sql.Date) vm.getFecha_ingreso_taller();
			//System.out.println("fecha sql "+fechaSQLI);
			java.sql.Date fechaSQLI = new java.sql.Date(vm.getFecha_ingreso_taller().getTime());
			java.sql.Date fechaSQLD = new java.sql.Date(vm.getFecha_ingreso_taller().getTime()); 
			ps.setDate(6, fechaSQLD);			
			ps.setDate(5, fechaSQLI);			
			ps.setInt(7, 0);
			ps.execute();
			PoolConnection.getPoolConnection().releaseConnection(con);
			return a+1;
		}catch (SQLException e) {
			e.getMessage();
			e.printStackTrace();	
			return 0;
		}
	}
	public void delete(String dominio)
	{
		sist=Sistema.getInstance();
		try {			
			Connection con=PoolConnection.getPoolConnection().getConnection();
			PreparedStatement ps=con.prepareStatement("select IDVEHICULO from VEHICULO where dominio=?");
			ps.setString(1, dominio);
			ResultSet rs=ps.executeQuery();
			if(rs.next())
				dom=rs.getInt(1);
			ps=con.prepareStatement("delete from VEHICULOS_MANTENIMIENTO IDVEHICULO=?");
			ps.setInt(1, dom);
			ps.execute();
			PoolConnection.getPoolConnection().releaseConnection(con);
		}catch (SQLException e) {
			e.getMessage();
			e.printStackTrace();			
		}
	}
	public VehiculoMant select(int numero)//levantar todos de memoria...
	{
		sist=Sistema.getInstance();
		VehiculoMant vm=new VehiculoMant();
		try {			
			Connection con=PoolConnection.getPoolConnection().getConnection();
			PreparedStatement ps=con.prepareStatement("select * from VEHICULOS_MANTENIMIENTO where IDVEHIMANT=?");
			ps.setInt(1, numero);			
			ResultSet rs=ps.executeQuery();
			while(rs.next())
			{
				
				vm.setEstado(rs.getString(1));
			//	vm.setCdc(sist.buscarCentroCosto(nroCC, sede));
				vm.setEstado(rs.getString(2));
				vm.setSede(sist.buscarSede(rs.getInt(3)));				
				vm.setFecha_ingreso_taller(rs.getDate(5));
				vm.setFecha_egreso_taller(rs.getDate(6));
				vm.setAprobado(false);
				PreparedStatement ps2=con.prepareStatement("select Dominio from VEHICULO where ID_VEHICULO=?");
				ps2.setInt(1, rs.getInt(4));				
				ResultSet rs2=ps2.executeQuery();
				if(rs2.next())
				{
					Vehiculo v=sist.buscarVehiculo(rs2.getString(1));
					vm.setVehiculo(v);
				}
					
				//sist.agregarMantenimiento(vm);
				
			}
			PoolConnection.getPoolConnection().releaseConnection(con);
		}catch (SQLException e) {
			e.getMessage();
			e.printStackTrace();			
		}
		return vm;
	}
	public void update(int numero)
	{
		try {			
			Connection con=PoolConnection.getPoolConnection().getConnection();
			PreparedStatement ps=con.prepareStatement("update VEHICULOS_MANTENIMIENTO set aprobado=1 where IDVEHIMANT=?");
			ps.setInt(1, numero);			
			ps.execute();			
			PoolConnection.getPoolConnection().releaseConnection(con);
		}catch (SQLException e) {
			e.getMessage();
			e.printStackTrace();			
		}
	}
}
